import http from './http.js';

/**
 * 获取游客列表
 * @param {Object} params - 请求参数
 * @param {string} params.openId - 小程序请求者的OpenId（必填）
 * @param {number|null} params.tourGroupId - 旅游团Id（可选）
 * @param {number|null} params.orderId - 订单Id（可选）
 * @returns {Promise} - 返回查询结果
 */
export const getTravelerList = async (params = {}) => {
  try {
    // 参数处理，确保必填字段存在
    const requestParams = {
      openId: '',
      tourGroupId: null,
      orderId: null,
      ...params
    };

    const res = await http.post('Mini/Traveler/GetAllList', requestParams);
    return res;
  } catch (error) {
    console.error('获取游客列表失败:', error);
    throw error;
  }
};

/**
 * 根据订单列表获取游客信息（批量查询）
 * @param {Object} params - 请求参数
 * @param {string} params.openId - 小程序请求者的OpenId（必填）
 * @param {number[]} params.orderIds - 订单ID列表
 * @returns {Promise} - 返回查询结果
 */
export const getTravelersByOrderIds = async (params = {}) => {
  try {
    const requestParams = {
      openId: '',
      orderIds: [],
      ...params
    };

    const res = await http.post('Mini/Traveler/GetAllList', requestParams);
    return res;
  } catch (error) {
    console.error('根据订单列表获取游客信息失败:', error);
    throw error;
  }
};

/**
 * 获取单个游客信息
 * @param {Object} params - 请求参数
 * @param {string} params.openId - 小程序请求者的OpenId（必填）
 * @param {number} params.id - 游客ID
 * @returns {Promise} - 返回查询结果
 */
export const getTravelerById = async (params = {}) => {
  try {
    
    
    const res = await http.post('Mini/Traveler/GetById', params);
    return res;
  } catch (error) {
    console.error('获取游客信息失败:', error);
    throw error;
  }
};

/**
 * 创建游客信息
 * @param {Object} params - 请求参数
 * @param {string} params.openId - 小程序请求者的OpenId（必填）
 * @param {Object} params.travelerInfo - 游客信息
 * @returns {Promise} - 返回创建结果
 */
export const createTraveler = async (params = {}) => {
  try {
 
    const res = await http.post('Mini/Traveler/Create', params);
    return res;
  } catch (error) {
    console.error('创建游客信息失败:', error);
    throw error;
  }
};

/**
 * 更新游客信息
 * @param {Object} params - 请求参数
 * @param {string} params.openId - 小程序请求者的OpenId（必填）
 * @param {Object} params.travelerInfo - 游客信息
 * @returns {Promise} - 返回更新结果
 */
export const updateTraveler = async (params = {}) => {
  try {
 
    
    const res = await http.post('Mini/Traveler/Update', params);
    return res;
  } catch (error) {
    console.error('更新游客信息失败:', error);
    throw error;
  }
};

export const deleteTraveler = async (params = {}) => {
  try {
    const requestParams = {
      openId: '',
      id: null,
      ...params
    };
    
    const res = await http.post('Mini/Traveler/DeleteById', params);
    return res;
  } catch (error) {
    console.error('删除游客信息失败:', error);
    throw error;
  }
};

// getTravelerDetail 作为 getTravelerById 的别名，保持向后兼容性
export const getTravelerDetail = getTravelerById;

/**
 * 智能解析旅客信息
 * @param {Object} params - 请求参数
 * @param {string} params.pasteContent - 待解析的文本内容
 * @returns {Promise} - 返回解析结果
 */
export const smartParseTraveler = async (params = {}) => {
  try {
    const requestParams = {
      pasteContent: '',
      ...params
    };
    
    const res = await http.post('Mini/Traveler/SmartPaste', requestParams);
    return res;
  } catch (error) {
    console.error('智能解析旅客信息失败:', error);
    throw error;
  }
};

/**
 * 批量创建旅客信息
 * @param {Object} params - 请求参数
 * @param {Array} params.travelers - 旅客信息数组
 * @returns {Promise} - 返回创建结果
 */
export const batchCreateTraveler = async (params = {}) => {
  try {
    const requestParams = {
      list: [],
      ...params
    };
    
    const res = await http.post('Mini/Traveler/BatchCreate', requestParams);
    return res;
  } catch (error) {
    console.error('批量创建旅客信息失败:', error);
    throw error;
  }
};